// Defines environmental objects
//--------------------------------
#ifndef OBJECTDATA_H
#define OBJECTDATA_H
#include "actor.h"
#include "bspecial.h"

class Object : public Actor {
public:

    Object() { }
    virtual ~Object() { }

};

class Stairs : public Object, public BIPortal, public BIMemorySymbol, public BIPriority {
public:

    Stairs( bool down, Map& target, uint x, uint y );
    virtual ~Stairs() { }

protected:

    virtual bool Symbol( IO::SymList* list ) const;
    virtual bool Name( std::string* name, bool* plural, uint article ) const;
    virtual bool Portal( Map** target, uint* x, uint* y, uint* type ) const;
    virtual bool MemorySymbol( bool* memory, bool* tileMemory ) const;
    virtual bool Priority( int* priority ) const;

private:

    bool _down;
    Map& _target;
    uint _targetX;
    uint _targetY;

};

class Brazier : public Object, public BILight, public BIBlocking, public BIFlammable, public BIOnLight, public BIMemorySymbol {
public:

    Brazier() { }
    virtual ~Brazier() { }

protected:

    virtual bool Symbol( IO::SymList* list ) const;
    virtual bool Light( int* lightRange ) const;
    virtual bool Blocking( bool* blocking, bool *losBlocking, uint* pushType ) const;
    virtual bool Name( std::string* name, bool* plural, uint article ) const;
    virtual bool Flammable( uint* flammableType ) const;
    virtual bool OnLight( Creature* c, Behaved* target );
    virtual bool MemorySymbol( bool* memory, bool* tileMemory ) const;

};

class Crate : public Object, public BIBlocking, public BIFlammable, public BIPriority {
public:

    Crate() { }
    virtual ~Crate() { }

protected:

    virtual bool Symbol( IO::SymList* list ) const;
    virtual bool Blocking( bool* blocking, bool *losBlocking, uint* pushType ) const;
    virtual bool Name( std::string* name, bool* plural, uint article ) const;
    virtual bool Flammable( uint* flammableType ) const;
    virtual bool Priority( int* priority ) const;

};

#endif
